1
using System
.Collections
;
2 using System
.Collections
.Generic
;
7 [CustomGridBrush(true, false, false, "Coordinate Brush")]
8 public class CoordinateBrush
: GridBrush
{
11 public override void Paint(GridLayout grid
, GameObject brushTarget
, Vector3Int position
)
13 var zPosition
= new Vector3Int(position
.x
, position
.y
, z
);
14 base.Paint(grid
, brushTarget
, zPosition
);
17 public override void Erase(GridLayout grid
, GameObject brushTarget
, Vector3Int position
)
19 var zPosition
= new Vector3Int(position
.x
, position
.y
, z
);
20 base.Erase(grid
, brushTarget
, zPosition
);
23 public override void FloodFill(GridLayout grid
, GameObject brushTarget
, Vector3Int position
)
25 var zPosition
= new Vector3Int(position
.x
, position
.y
, z
);
26 base.FloodFill(grid
, brushTarget
, zPosition
);
29 public override void BoxFill(GridLayout gridLayout
, GameObject brushTarget
, BoundsInt position
)
31 var zPosition
= new Vector3Int(position
.x
, position
.y
, z
);
32 position
.position
= zPosition
;
33 base.BoxFill(gridLayout
, brushTarget
, position
);
36 [MenuItem("Assets/Create/Coordinate Brush")]
37 public static void CreateBrush()
39 string path
= EditorUtility
.SaveFilePanelInProject("Save Coordinate Brush", "New Coordinate Brush", "asset", "Save Coordinate Brush", "Assets");
44 AssetDatabase
.CreateAsset(ScriptableObject
.CreateInstance
<CoordinateBrush
>(), path
);
48 [CustomEditor(typeof(CoordinateBrush
))]
49 public class CoordinateBrushEditor
: GridBrushEditor
51 private CoordinateBrush coordinateBrush { get { return target as CoordinateBrush; }
}
53 public override void PaintPreview(GridLayout grid
, GameObject brushTarget
, Vector3Int position
)
55 var zPosition
= new Vector3Int(position
.x
, position
.y
, coordinateBrush
.z
);
56 base.PaintPreview(grid
, brushTarget
, zPosition
);
59 public override void OnPaintSceneGUI(GridLayout grid
, GameObject brushTarget
, BoundsInt position
, GridBrushBase
.Tool tool
, bool executing
)
61 base.OnPaintSceneGUI(grid
, brushTarget
, position
, tool
, executing
);
62 if (coordinateBrush
.z
!= 0)
64 var zPosition
= new Vector3Int(position
.min
.x
, position
.min
.y
, coordinateBrush
.z
);
65 BoundsInt newPosition
= new BoundsInt(zPosition
, position
.size
);
66 Vector3
[] cellLocals
= new Vector3
[]
68 grid
.CellToLocal(new Vector3Int(newPosition
.min
.x
, newPosition
.min
.y
, newPosition
.min
.z
)),
69 grid
.CellToLocal(new Vector3Int(newPosition
.max
.x
, newPosition
.min
.y
, newPosition
.min
.z
)),
70 grid
.CellToLocal(new Vector3Int(newPosition
.max
.x
, newPosition
.max
.y
, newPosition
.min
.z
)),
71 grid
.CellToLocal(new Vector3Int(newPosition
.min
.x
, newPosition
.max
.y
, newPosition
.min
.z
))
74 Handles
.color
= Color
.blue
;
76 for (int j
= cellLocals
.Length
- 1; i
< cellLocals
.Length
; j
= i
++)
78 Handles
.DrawLine(cellLocals
[j
], cellLocals
[i
]);
82 var labelText
= "Pos: " + new Vector3Int(position
.x
, position
.y
, coordinateBrush
.z
);
83 if (position
.size
.x
> 1 || position
.size
.y
> 1) {
84 labelText
+= " Size: " + new Vector2Int(position
.size
.x
, position
.size
.y
);
87 Handles
.Label(grid
.CellToWorld(new Vector3Int(position
.x
, position
.y
, coordinateBrush
.z
)), labelText
);